#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H


#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QMatrix4x4>
#include <QWheelEvent>
#include <QMouseEvent> // <-- 关键：包含处理鼠标事件所需的头文件
#include "GLBModel.h"

class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
    Q_OBJECT

public:
    explicit MyGLWidget(QWidget *parent = nullptr);
    ~MyGLWidget();

protected:
    // --- 标准的 OpenGL 事件 ---
    void initializeGL() override;
    void paintGL() override;
    void resizeGL(int w, int h) override;

    // --- 交互事件处理 ---
    void wheelEvent(QWheelEvent *event) override;
    void mousePressEvent(QMouseEvent *event) override;   // <-- 新增：鼠标按下事件
    void mouseMoveEvent(QMouseEvent *event) override;    // <-- 新增：鼠标移动事件

private:
    QOpenGLShaderProgram *m_program = nullptr;
    GLTFModel m_model;

    // --- 摄像机和投影相关的成员变量 ---
    QMatrix4x4 m_projection;
    float m_cameraDistance;
    float m_cameraYaw;       // <-- 新增：摄像机水平偏航角
    float m_cameraPitch;     // <-- 新增：摄像机垂直俯仰角
    QPoint m_lastMousePos;   // <-- 新增：记录上一次鼠标的位置
};
#endif // MYGLWIDGET_H
